package __二叉树

import "math"

/**
https://leetcode.cn/problems/minimum-absolute-difference-in-bst/

530. 二叉搜索树的最小绝对差
给你一个二叉搜索树的根节点 root ，返回 树中任意两不同节点值之间的最小差值 。
差值是一个正数，其数值等于两值之差的绝对值。

示例 1：
输入：root = [4,2,6,1,3]
输出：1

示例 2：
输入：root = [1,0,48,null,null,12,49]
输出：1
*/
// 中序遍历的同时计算最小值
func getMinimumDifference(root *TreeNode) int {
	// 保留前一个节点的指针
	var prev *TreeNode

	// 定义一个比较大的值
	min := math.MaxInt64

	var travel func(node *TreeNode)
	travel = func(node *TreeNode) {
		if node == nil {
			return
		}
		travel(node.Left)
		if prev != nil && node.Val-prev.Val < min {
			min = node.Val - prev.Val
		}
		prev = node
		travel(node.Right)
	}

	travel(root)
	return min
}
